home *** CD-ROM | disk | FTP | other *** search
-
- (*
-
- (*$L+ ab hier alles LINK ON!*)
-
- VAR buffer: ARRAY [0..257] OF CHAR;
- start, end: CARDINAL;
-
- PROCEDURE readBuffer;
- VAR p: CARDINAL;
- BEGIN
- ASSEMBLER
- MOVE.L #buffer,(A3)+
- MOVE IOConfig.LengthOfBufferedLine,D0
- CMPI #255,D0
- BLS lok
- MOVE #255,D0
- lok:
- MOVE D0,(A3)+
- JSR ReadLine
- END;
- IF Done THEN
- p:= Strings.Length(buffer);
- buffer[p]:= CHR(13);
- INC(p);
- buffer[p]:= CHR(0);
- ELSE
- p:= 0
- END;
- end:= p; start:= 0;
- END readBuffer;
-
- PROCEDURE skipSep;
- BEGIN
- WHILE (start < end) AND (buffer[start] IN IOConfig.Separators) DO INC(start) END
- END skipSep;
-
- PROCEDURE ReadLn;
- BEGIN
- start:= end;
- Done:= TRUE
- END ReadLn;
-
- PROCEDURE ReadToken (VAR s: ARRAY OF CHAR);
- VAR i: CARDINAL;
- BEGIN
- REPEAT
- (*!!! hier keinen Puffer sondern direkte Eingabe!*)
- IF start >= end THEN readBuffer END;
- IF NOT Done THEN RETURN END;
- skipSep;
- i:= 0;
- WHILE (start<end)
- AND (i<=HIGH (s))
- AND NOT (buffer[start] IN IOConfig.Separators) DO
- s[i]:= buffer[start];
- INC(start);
- INC(i);
- END;
- IF i <= HIGH (s) THEN s[i]:= CHR(0); END;
- UNTIL s[0] # CHR(0);
- END ReadToken;
-
- PROCEDURE ReadBufChar (VAR ch: CHAR);
- BEGIN
- IF start >= end THEN readBuffer END;
- IF Done THEN
- ch:= buffer [start];
- INC (start);
- ELSE
- ch:= 0C
- END;
- END ReadBufChar;
-
-
- PROCEDURE EndOfRead(skip: BOOLEAN): BOOLEAN;
- BEGIN
- IF IOConfig.ReadStringByLine THEN
- RETURN TRUE
- ELSE
- IF skip THEN
- skipSep;
- END;
- RETURN start = end
- END
- END EndOfRead;
-
- PROCEDURE ReadAgain (VAR ch: CHAR);
- BEGIN
- IF IOConfig.ReadStringByLine THEN
- HALT; (*!!!readLast:= TRUE;*)
- Done:= TRUE
- ELSE
- Done:= start > 0;
- IF Done THEN
- DEC (start)
- END
- END
- END ReadAgain;
- *)
-